summaryrefslogtreecommitdiffstats
path: root/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Setting.kt
blob: befd40257f9250700bd959daaee4d7a8a849a50f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

package org.yuzu.yuzu_emu.features.settings.model

/**
 * Abstraction for a setting item as read from / written to yuzu's configuration ini files.
 * These files generally consist of a key/value pair, though the type of value is ambiguous and
 * must be inferred at read-time. The type of value determines which child of this class is used
 * to represent the Setting.
 */
abstract class Setting(
    /**
     * @return The identifier used to write this setting to the ini file.
     */
    val key: String,
    /**
     * @return The name of the header under which this Setting should be written in the ini file.
     */
    val section: String
) {

    /**
     * @return A representation of this Setting's backing value converted to a String (e.g. for serialization).
     */
    abstract val valueAsString: String
}